package mobile.game.core.gen.entity;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import mobile.game.core.config.JowConfig;

public class ClearDB {
	
	/**  TODO 数据库连接方面需要改进 */
	public Connection getDBConnection(String driver, String urlDB, String user, String pwd) throws Exception {
		// 连接MYSQL数据库
		Class.forName(driver);
		Connection conn = DriverManager.getConnection(urlDB, user, pwd);
		
		return conn;
	}
	
	/**
	 * 根据配置源文件夹检查建数据表
	 */
	public void clearDB(Connection conn) {
		try {
			// 获取表的信息
			String catalog = null;
			String schema = "%";
			String[] types = new String[] { "TABLE" };
			DatabaseMetaData dBMetaData = conn.getMetaData();
			
			// 从databaseMetaData获取表信息
			ResultSet tableSet = dBMetaData.getTables(catalog, schema, null, types);
			while(tableSet.next()) {
				String tableName = tableSet.getString(3);
				System.out.println("Clear table=" + tableName);
				
				// 执行建表操作
				Statement st = conn.createStatement();
				st.executeUpdate("truncate table " + tableName);
				st.close();
			}
			
			// 关闭数据库连接
			tableSet.close();
			
			System.out.println("Clear finished");
			
			// 关闭连接
			conn.close();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 给部署服务器时调用新建数据库
	 * @param args 一个参数要搜索的源文件夹
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
		//设置log4j2配置文件所需的环境变量，作用是gen的时候
		//不会报配置没找到的错误，同时有gen.log的日志记录
		System.setProperty("logFileName", "clearDB");
		
		ClearDB genDB = new ClearDB();
		Connection conn = genDB.getDBConnection("com.mysql.jdbc.Driver", 
				JowConfig.DB_URL, JowConfig.DB_USER, JowConfig.DB_PWD);
		genDB.clearDB(conn);
		
		//正常退出
		System.exit(0);
	}

}
